/*
 * AccountChangeEvent.java
 *
 *
 */
package banksimulator.bank;

import java.util.EventObject;

/**
 * AccountChangeEvent被传送给所有注册到某一AbstractAccount上的AccountChangeListener侦听器，
 * 通知它们该帐户的余额发生了变化，产生这种变化的原因可能是存款或取款。
 * <br>AccountChangeEvent封装了帐户变化前的余额和发生变化后的余额。
 * <p>实现AccountChangeListener接口的对象在所侦听的帐户余额发生变化时能获取此AccountChangeEvent。
 * @author Rajab
 */
public class AccountChangeEvent extends EventObject {

    private double before;
    private double after;

    /**
     * 构造一个新的AccountChangeEvent。
     * @param source 此事件的发生源（某一帐户）
     * @param before 发生变化前的帐户余额
     * @param after 发生变化后的帐户余额
     */
    public AccountChangeEvent(Object source, double before, double after) {
        super(source);
        this.before = before;
        this.after = after;
    }

    /**
     * 获取帐户发生变化前的余额。
     * @return 变化前的余额
     */
    public double getBefore() {
        return before;
    }

    /**
     * 获取帐户发生变化后的余额。
     * @return 变化后的余额
     */
    public double getAfter() {
        return after;
    }
}
